﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Biblioteca.Utils;
using Biblioteca.Objetos;
using SEG.Utils;
using Biblioteca.DataBase;
using System.Data.Common;
using SEG.Objetos;
using System.Collections.Generic;
using Pms.Utils;


namespace SEG
{
    public partial class VincularEmpresa : System.Web.UI.Page
    {
        Usuario usuAut;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session.Count == 0)
                Response.Redirect("~/Login.aspx");
            else
            {
                usuAut = (Usuario)Session["usuario"];
                //char perm = BiblioPMS.VerifiquePermissao("VINCULAREMPRESA.ASPX", BiblioPMS.aplicacaoSEG, usuAut.Login);
                //if (perm.Equals('N'))
                //    Response.Redirect("Usuarios.aspx");

                if (!Page.IsPostBack)
                {
                    PreencherControles();

                }
                else
                {
                    lblErro.Visible = false;
                }
            }

        }

        private void PreencherControles()
        {
            PreencherddlGrupos();

            PreencherddlEmpresas();

            PreencherlistUsuarios(ddlGrupos.SelectedValue);

            PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

        }

        private void PreencherlistUsuarios(string grpsel)
        {
            try
            {
                List<Usu> listUsuariosGrupo = Usu.ListarTodosdoGrupo(usuAut.Login, grpsel);

                if (listUsuariosGrupo != null)
                {
                    foreach (Usu objUsu in listUsuariosGrupo)
                    {
                        ListItem item = new ListItem(objUsu.Nome, objUsu.Cod_usu);

                        listUsuarios.Items.Add(item);
                    }
                }

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }

        }

        private void PreencherddlEmpresas()
        {
            try
            {
                List<Empresa> listEmpresas = Empresa.ObterEmpresas(usuAut.Login);

                if (listEmpresas != null)
                {
                    foreach (Empresa objEmpresa in listEmpresas)
                    {
                        ListItem item = new ListItem(objEmpresa.Nom_Empresa, objEmpresa.Cod_Empresa);
                        ddlEmpresas.Items.Add(item);
                    }
                }
                ddlEmpresas.SelectedValue = "1";

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }


        private void PreencherddlEmpresas(string cod_usu)
        {
            try
            {
                ddlEmpresas.Items.Clear();

                List<Empresa> listEmpresas = Empresa.ObterEmpresas(usuAut.Login, cod_usu);

                if (listEmpresas != null)
                {
                    foreach (Empresa objEmpresa in listEmpresas)
                    {
                        ListItem item = new ListItem(objEmpresa.Nom_Empresa, objEmpresa.Cod_Empresa);
                        ddlEmpresas.Items.Add(item);
                    }
                }
                ddlEmpresas.SelectedValue = "1";

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        private void PreencherddlGrupos()
        {

            try
            {
                List<Grupo> listGrupos = Grupo.ObterGrupos(usuAut.Login);

                if (listGrupos != null)
                {
                    foreach (Grupo objGrupo in listGrupos)
                    {
                        ListItem item = new ListItem(objGrupo.Nom_grp, objGrupo.Cod_grp);
                        ddlGrupos.Items.Add(item);
                    }
                }
                ddlGrupos.SelectedValue = "1";

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //listUsuarios.Items.Clear();

            //PreencherlistUsuarios(ddlGrupos.SelectedValue);
        }

        private void PreencherlistUsuariosVinculados(string cod_grupo, string cod_empresa)
        {
            try
            {
                List<Usu> listUsuariosGrupoEmpresa = Usu.ListarTodosdoGrupoEmpresa(usuAut.Login, cod_grupo, cod_empresa);

                if (listUsuariosGrupoEmpresa != null)
                {
                    foreach (Usu objUsu in listUsuariosGrupoEmpresa)
                    {
                        ListItem item = new ListItem(objUsu.Nome, objUsu.Cod_usu);

                        listUsuariosVincular.Items.Add(item);
                    }
                }
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }

        }


        protected void btnPesquisarUGE_Click(object sender, EventArgs e)
        {

            //listUsuariosVincular.Items.Clear();

            //PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                List<Empresa_Grupo_Usuario> listEmpGrpUsu = new List<Empresa_Grupo_Usuario>();

                foreach (ListItem item in listUsuarios.Items)
                {
                    if (item.Selected)
                    {
                        Empresa_Grupo_Usuario objEmpGrpUsu = new Empresa_Grupo_Usuario(ddlEmpresas.SelectedValue, item.Value, ddlGrupos.SelectedValue);
                        listEmpGrpUsu.Add(objEmpGrpUsu);
                    }
                }

                Empresa_Grupo_Usuario.Inserir(usuAut.Login, listEmpGrpUsu);

                listUsuariosVincular.Items.Clear();

                PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

                listUsuarios.Items.Clear();

                PreencherlistUsuarios(ddlGrupos.SelectedValue);
            }

            catch (Exception ex)
            {

                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void btnRemove_Click(object sender, EventArgs e)
        {
            try
            {
                List<Empresa_Grupo_Usuario> listEmpGrpUsu = new List<Empresa_Grupo_Usuario>();

                foreach (ListItem item in listUsuariosVincular.Items)
                {
                    if (item.Selected)
                    {
                        Empresa_Grupo_Usuario objEmpGrpUsu = new Empresa_Grupo_Usuario(ddlEmpresas.SelectedValue, item.Value, ddlGrupos.SelectedValue);
                        listEmpGrpUsu.Add(objEmpGrpUsu);
                    }
                }

                if (listEmpGrpUsu != null)
                    Empresa_Grupo_Usuario.Excluir(usuAut.Login, listEmpGrpUsu);

                listUsuariosVincular.Items.Clear();

                PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

                listUsuarios.Items.Clear();

                PreencherlistUsuarios(ddlGrupos.SelectedValue);

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }


        }

        protected void ddlGrupos_SelectedIndexChanged(object sender, EventArgs e)
        {
            listUsuarios.Items.Clear();

            PreencherlistUsuarios(ddlGrupos.SelectedValue);

            listUsuariosVincular.Items.Clear();

            PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

        }

        //protected void ddlEmpresas_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    listUsuariosVincular.Items.Clear();

        //    PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);

        //    listUsuarios.Items.Clear();

        //    PreencherlistUsuarios(ddlGrupos.SelectedValue);
        //}

        protected void listUsuarios_SelectedIndexChanged(object sender, EventArgs e)
        {

            PreencherddlEmpresas(listUsuarios.SelectedValue);

            listUsuariosVincular.Items.Clear();

            if (!ddlEmpresas.Items.Count.Equals(0))
                PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);
            else
            {
                btnAdd.Enabled = false;
            }

        }

        protected void ddlEmpresas_SelectedIndexChanged(object sender, EventArgs e)
        {
            listUsuariosVincular.Items.Clear();

            PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);
        }

        protected void chboxConsultar_CheckedChanged(object sender, EventArgs e)
        {
            if (chboxConsultar.Checked)
            {
                ddlEmpresas.Items.Clear();

                PreencherddlEmpresas();
            }
            else
            {
                ddlEmpresas.Items.Clear();

                if (!ddlEmpresas.Items.Count.Equals(0))
                    PreencherlistUsuariosVinculados(ddlGrupos.SelectedValue, ddlEmpresas.SelectedValue);
                else
                {
                    btnAdd.Enabled = false;
                }


            }

        }
    }
}
